import { ref, toRefs } from 'vue';
import useDictStore from '@/store/modules/dict';
import { getDicts } from '@/api/system/dict/data';

/**
 * 获取字典数据
 */
export function useDict(...args) {
  const res = ref({});
  return (() => {
    args.forEach((dictType) => {
      res.value[dictType] = [];
      const dicts = useDictStore().getDict(dictType);
      if (dicts) {
        res.value[dictType] = dicts;
      } else {
        getDicts(dictType).then((resp) => {
          res.value[dictType] = resp.data.map((p) => ({
            label: p.dictLabel,
            value: p.dictValue,
            elTagType: p.listClass,
            elTagClass: p.cssClass,
          }));
          useDictStore().setDict(dictType, res.value[dictType]);
        });
      }
    });
    return toRefs(res.value);
  })();
}

export function useConstDict(dictType, readConverter) {
  if (!readConverter || typeof readConverter !== 'string' || readConverter.trim() === '') {
    return toRefs([]);
  }
  readConverter = readConverter.replace('，', ',');
  let dictPairs = readConverter.split(',');
  dictPairs = dictPairs
    .filter((dictPair) => dictPair.indexOf('=') > 0)
    .map((dictPair) => {
      let labelAndValueArr = dictPair.split('=');
      return {
        label: labelAndValueArr[1].trim(),
        value: labelAndValueArr[0].trim(),
        elTagType: '',
        elTagClass: '',
      };
    });
  return ref(dictPairs);
}
